@echo off

rem jar平级目录
set AppName=ruoyi-admin.jar

rem JVM参数
set JVM_OPTS=-Dname=%AppName% -Duser.timezone=Asia/Shanghai -Xms512m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC

ECHO.
ECHO.  [1] 启动%AppName%
ECHO.  [2] 关闭%AppName%
ECHO.  [3] 重启%AppName%
ECHO.  [4] 启动状态 %AppName%
ECHO.  [5] 退 出
ECHO.

ECHO.请输入选择项目的序号:
set /p ID=
IF "%id%"=="1" GOTO start
IF "%id%"=="2" GOTO stop
IF "%id%"=="3" GOTO restart
IF "%id%"=="4" GOTO status
IF "%id%"=="5" EXIT
PAUSE

:start
    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
        set pid=%%a
        set image_name=%%b
    )
    if defined pid (
        echo %AppName% is running
        PAUSE
    ) else (
        start javaw %JVM_OPTS% -jar %AppName%
        echo starting……
        echo Start %AppName% success...
    )
goto:eof

:stop
    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
        set pid=%%a
        set image_name=%%b
    )
    if defined pid (
        echo prepare to kill %image_name%
        echo start kill %pid% ...
        taskkill /f /pid %pid%
    ) else (
        echo process %AppName% does not exists
    )
goto:eof

:restart
    call :stop
    call :start
goto:eof

:status
    for /f "usebackq tokens=1-2" %%a in (`jps -l ^| findstr %AppName%`) do (
        set pid=%%a
        set image_name=%%b
    )
    if defined pid (
        echo %image_name% is running
    ) else (
        echo process %AppName% is dead
    )
goto:eof